[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

Posted by gnomixa on Stack Overflow See other posts from Stack Overflow or by gnomixa
Published on 2010-05-17T17:06:28Z Indexed on 2010/05/17 17:10 UTC
Read the original article Hit count: 1144

Filed under:
|
|

In ASP.net web service if the above isn't specified , what is the response format by default? Also, if my web service below:

[WebMethod()]
        public List<Sample> GenerateSamples(string[][] data)
        {
            ResultsFactory f = new ResultsFactory(data);

            List<Sample> samples = f.GenerateSamples();
            return samples;
        }

returns the list of objects, If I change the response format to JSON, I have to change the return type to string, then how do I access objects in my javascript?

Currently I call this web service in my JS such as:

 $.ajax({
    type: "POST",
    url: "http://localhost/TemplateWebService/Service.asmx/GenerateSamples",
        data: jsonText,

        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var samples = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            if (samples.length > 0) {
                doSomethingHere(samples);
            } else {
                alert("No samples have been generated");
            }



        },

        error: function(xhr, status, error) {
            var msg = JSON.parse(xhr.responseText);
            alert(msg.Message);
        }

    });

What i noticed though, even though everything works perfectly fine, the eval statement never gets executed, which means that the web service always returns a string!

So my question is, is [ScriptMethod(ResponseFormat = ResponseFormat.Json)] necessary on the web service definition side?

The way things are now, I can use samples array and access each object and its properties as I normally would in any OOP code, which is very convenient, and everything works no problem, but I just wanted to make sure that I am not missing anything in my set up.

I took the basics of combining Jquery's ajax with asp.net from Encosia side, and the response type wasn't mentioned there - I read it on another site and am I not sure how vital it is.

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about AJAX